Mysql 数据库表数据的快速迁移

表数据迁移 (前提:目标数据库和源数据库含有相同数据库名和表)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

mysql> ALTER TABLE t_app_banner DISCARD TABLESPACE; //目标数据库.ibd文件与原先的.frm文件解除绑定

$ cd /var/lib/mysql //mysql数据库文件存放位置 在/etc/mysql/mysql.conf.d中查看

$ ls
auto.cnf test debian-5.7.flag ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1 ibtmp1 mysql performance_schema sys

$ls -lht
total 144K
-rw-r----- 1 mysql mysql 9.1K Sep 18 08:00 t_app_banner.frm
-rw-r----- 1 mysql mysql 67 Sep 18 03:00 db.opt
-rw-rw-r-- 1 mysql mysql 128K Sep 16 06:50 t_app_banner.ibd

$ 复制要恢复表的.ibd文件 至目标数据库的相同目录下进行覆盖

$cd /var/lib/mysql/test
$ ls -lht
total 144K
-rw-r----- 1 mysql mysql 9.1K Sep 18 08:00 t_app_banner.frm
-rw-r----- 1 mysql mysql 67 Sep 18 03:00 db.opt
-rw-rw-r-- 1 ubuntu ubuntu 128K Sep 16 06:50 t_app_banner.ibd //如果该文件使用者为ubuntu需要进行权限更改

$ chown mysql:mysql /var/lib/mysql/test -R //修改t_app_banner.ibd的授权用户

$mysql> ALTER TABLE t_app_banner IMPORT TABLESPACE; //恢复ibd和frm文件的关联